package io.sdph.userprofile;

import io.sdph.userprofile.exceptions.UserProfileException;
import io.sdph.userprofile.model.User;

import java.util.List;

/**
 * Interfejs managera zarządzającego użytkownikami.
 * 
 * @author Konrad Szewczyk, Adrian Szwajkowski, Tomasz Korpowski
 * @since 0.0.1
 */
public interface IUserManager {
	
	/**
	 * Dodaje usera
	 * 
	 * @param user - użytkownik
	 * @throws UserProfileException
	 */
	public void addUser(User user, String password) throws UserProfileException;
	
	/**
	 * Modyfikuje usera
	 * 
	 * @param user
	 * @throws UserProfileException
	 */
	public void modifyUser(User user, String password) throws UserProfileException;
	
	/**
	 * Usuwa użytkownika
	 * 
	 * @param user
	 * @throws UserProfileException
	 */
	public void deleteUser(User user) throws UserProfileException;
	
	/**
	 * Pobiera użytkownika o podanym id
	 * 
	 * @param userId - id użytkownika
	 * @return użytkownik o podanym id
	 * @throws UserProfileException
	 */
	public User getUser(String userId) throws UserProfileException;
	
	/**
	 * Pobiera listę użytkowników 
	 * Lista jest posortowana po nazwisku, imieniu.
	 * 
	 * @return lista użytkowników
	 * @throws UserProfileException
	 */
	public List<User> getUsers() throws UserProfileException;	
	
}
